1
I Meccanismi del Controllo di Copia
AI037Lesson 16
00:00

Padroneggiare il ciclo di vita di un oggetto C++ significa comandare i meccanismi stessi dell'esistenza all'interno del heap e dello stack. Il controllo di copia definisce come una classe gestisce il suo ciclo di vita attraverso due operazioni: il costruttore di copia e il operatore di assegnazione di copia.

1. Inizializzazione vs. Assegnazione

Inizializzazione diretta (ad esempio, string dots(10, '.')) chiama direttamente un costruttore. Tuttavia, inizializzazione per copia (string s2 = dots) si basa sul costruttore di copia. A differenza dell'inizializzazione, assegnazione (trans = accum) sovrascrive un oggetto esistente usando operatore=. Un vincolo fondamentale: il parametro del costruttore di copia deve essere un riferimento (const Foo&); altrimenti, passare un argomento per valore attiverebbe un ciclo ricorsivo infinito di chiamate di copia.

Oggetto Sorgente[Dati A]Oggetto Destinazione[Dati A]Copia dei MembriCostruttore di Copia / operatore=

2. Il Ruolo della Sintesi

Se non definisci questi membri, il compilatore fornisce versioni sintetizzate che eseguono copie membro per membro. Attento: sebbene sufficienti per tipi semplici, spesso falliscono per classi che gestiscono memoria dinamica, causando puntatori appesi o doppie liberazioni.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>